package com.ihr360.insurance.service;

import com.ihr360.commons.model.type.BenefitCategory;
import com.ihr360.insurance.entity.vo.CompanyBenefitSimpleVo;
import com.ihr360.insurance.model.dto.benefits.CompanyBenefit;
import com.ihr360.insurance.model.vo.CompanyBenefitVo;
import com.ihr360.rest.service.SimpleRestService;

import java.util.List;
import java.util.Map;

public interface CompanyBenefitService extends SimpleRestService<CompanyBenefit, Long> {

    /**
     * 获取社保/公积金方案中包含的缴纳类型
     *
     * @param companyId
     * @param category
     * @return
     */
    Map<Long, String> getCompanyBenefitModes(String companyId, BenefitCategory category);

    /**
     * 更新
     *
     * @param companyId
     * @param benefit
     * @return 返回id
     */
    Long saveBenefit(String companyId, CompanyBenefit benefit);

    /**
     * 更新（保存社保公积金人数）
     * note:内部接口，未做权限限制，不允许Controller调用
     *
     * @param benefits
     * @return 返回id
     */
    void saveBenefits(List<CompanyBenefit> benefits);

    /**
     * 复制
     *
     * @param name
     * @param companyBenefitId
     * @return
     */
    boolean copyBenefit(String name, Long companyBenefitId);

    /**
     * 获取指定的方案
     *
     * @param ids
     * @return
     */
    List<CompanyBenefit> getCompanyBenefitsIn(List<Long> ids);

    /**
     * 获取社保公积金方案的简要信息
     *
     * @param companyId
     * @return
     */
    List<CompanyBenefitSimpleVo> getCompanyBenefitVos(String companyId);

    /**
     * 获取全部的可用方案
     *
     * @param companyId
     * @return
     */
    List<CompanyBenefitVo> getEnabledCompanyBenefits(String companyId);

}